#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//int fib(int n)
//{
//	int a = 1;
//	int b = 1;
//	int c = 1;
//	while (n >= 3)
//	{
//		c = a + b;
//		a = b;
//		b = c;
//
//		n--;
//	}
//	return c;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fib(n);
//	printf("%d\n", ret);
//
//	return 0;
//}

//int fib(int n)
//{
//	if (n <= 2)
//		return 1;
//	else
//		return fib(n - 1) + fib(n - 2);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fib(n);
//	printf("%d\n", ret);
//
//	return 0;
//}
//

//int my_pow(int n, int k)
//{
//	if (k == 0)
//		return 1;
//	else
//		return n * my_pow(n, k - 1);
//}
//
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d %d", &n,&k);
//	int ret = my_pow(n,k);
//	printf("%d\n", ret);
//
//	return 0;
//}
//


//DigitSum(int n)
//{
//	if (n > 9)
//		return (n % 10) + DigitSum(n / 10);
//	else
//		return n;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int sum =DigitSum(n);
//
//	printf("%d\n", sum);
//	return 0;
//}

//#include<string.h>
//int main()
//{
//	char arr[]="abcdef";
//	int ret = strlen(arr);
//
//	printf("%d\n", ret);
//	return 0;
//}

//int my_strlen(char* p)
//{
//	if (*p == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(p + 1);
//}
//
//int main()
//{
//	char arr[] = "abedef";
//	int ret = my_strlen(arr);
//	printf("%d\n", ret);
//	return 0;
//}

//int Fac(int n)
//{
//	if (n == 1)
//		return 1;
//	else
//		return n * Fac(n - 1);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fac(n);
//
//	printf("%d\n", ret);
//	return 0;
//}


//int Fac(int n)
//{
//	int ret = 1;
//	int i = 0;
//	for (i = 1; i <= n; i++)
//	{
//		ret = i * ret;
//	}
//	return ret;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fac(n);
//
//	printf("%d\n", ret);
//	return 0;
//}
//
//void print(int n)
//{
//	if (n > 9)
//	{
//		print(n / 10);
//	}
//	printf("%d ", n % 10);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//
//	return 0;
//}


//void reverse_string(char* p)
//{
//	if (*p != '\0')
//	{
//		reverse_string(p + 1);
//	}
//	printf("%c", *p);
//}
//
//int main()
//{
//	char arr[] = "abcdef";
//	reverse_string(arr);
//
//	return 0;
//}


double my_pow(double n, double k)
{
	if (k == 0)
		return 1;
	else if (k > 0)
		return n * my_pow(n, k - 1);
	else
		return 1.0 / n * my_pow(n, 1 + k);
}

int main()
{
	double n = 0;
	double k = 0;
	scanf("%lf %lf", &n, &k);
	double ret = my_pow(n, k);
	printf("%lf\n", ret);


	return 0;
}
